package pessoal.cliente;

import java.util.List;

import pessoal.Endereco;
import pessoal.cliente.exception.ClienteExistenteException;
import pessoal.cliente.exception.ClienteInvalidoException;
import util.CampoObrigatorioException;
import util.ErroAcessoRepositorioException;
import junit.framework.TestCase;

public class ClienteTest extends TestCase {

	ClienteFiel c1;
	ClienteFiel c2;
	ClienteFiel c3;
	ClienteFiel c4;
	ClienteFiel c5;
	ClienteFiel c6;
	
	Endereco end1;
	Endereco end2;
	
	RepositorioClientesBDR rep;
	
	protected void setUp() throws Exception {
		end1 = new Endereco("testaaltera","end","testaaltera","end","testaaltera","end","end");
		end2 = new Endereco("end","end","end","end","end","end","end");
		
		c1 = new ClienteFiel("999999","novonovo","novonovo",end2,44);
		c2 = new ClienteFiel("222222","sergio","22222",end2,0);
		c3 = new ClienteFiel("333333","pepeu","33333",end1,33);
		c4 = new ClienteFiel("444444","hawaiiiiiiii","44444",end2,4.5);
		c5 = new ClienteFiel("555555","MARACA","55555",end2,11111);
		c6 = new ClienteFiel("666666","doidodoido","66666",end2,1212);
		
		rep = new RepositorioClientesBDR();
	}

	

	/*public void testAtualizarClienteFiel() {
		try {
			rep.atualizarClienteFiel(c2);
			
		} catch (ClienteInvalidoException e) {
			fail("cliente invalido");
		} catch (ErroAcessoRepositorioException e) {
			fail("erro no acesso ao repositorio");
		}
	}
	
	public void testConsultarClienteFiel(){
		try {
			rep.consultarClienteFiel("10101010101");
			rep.consultarClienteFiel("12345678901");
			rep.consultarClienteFiel("11111111111");
		} catch (ClienteInvalidoException e) {
			fail("nao achou!!");
		} catch (ErroAcessoRepositorioException e) {
			fail("erro acesso ao repositorio!!!");
		}
		
	}
	
	public void testExiste(){
		try {
			assertTrue(rep.existeCliente("11111"));
			assertTrue(rep.existeCliente("111111"));
			assertTrue(rep.existeCliente("11111111111"));
			assertTrue(rep.existeCliente("22222222222"));
			assertTrue(rep.existeCliente("33333333333"));
			assertFalse(rep.existeCliente("w11111111111"));
		} catch (ErroAcessoRepositorioException e) {
			fail("erro de acesso ao repositorio");
		}
	}*/
	
	public void testInserirClienteFiel(){
		try {
			rep.inserirClienteFiel(c1);
			/*rep.inserirClienteFiel(c2);
			rep.inserirClienteFiel(c3);
			rep.inserirClienteFiel(c4);
			rep.inserirClienteFiel(c5);
			rep.inserirClienteFiel(c6);*/
		} catch (ClienteExistenteException e) {
			fail("cliente existente");
		} catch (ErroAcessoRepositorioException e) {
			fail("erro de acesso ao repositorio");
		} catch (CampoObrigatorioException e) {
			fail("campo obrigatorio");
		}
	}
	
	/*public void testExcluirClienteFiel(){
		try {
			rep.excluirClienteFiel("11111111111");
			rep.excluirClienteFiel("22222222222");
		} catch (ClienteInvalidoException e) {
			fail("cliente invalido");
		} catch (ErroAcessoRepositorioException e) {
			fail("erro de acesso ao repositorio!!!");
		}
	}
	
	public void testListarClienteFiel(){
		try {
			List<ClienteFiel> clientes=rep.listarClientes();
			for(ClienteFiel e : clientes){
				System.out.println("************************");
				System.out.println(e.getCpf()+"--"+e.getNome()+"--"+e.getRg()
						+"--"+e.getDesconto());
				System.out.println("endereco: "+e.getEndereco().getBairro()+"--"+
						e.getEndereco().getCidade()+"--"+e.getEndereco().getNumero());
				System.out.println("************************");
			}
		} catch (ErroAcessoRepositorioException e) {
			fail("falha no acesso ao repositorio");
		}
	}*/

}
